/**
 * 节流函数
 * @param {*} fn 
 * @param {*} interval 
 */
export function throttle(fn, wait) {
  // var enterTime = 0;//触发的时间
  // var gapTime = wait || 300 ; // 间隔时间，如果interval不传，则默认300ms
  // return function() {
  //   var context = this;
  //   var backTime = new Date();//第一次函数return即触发的时间
  //   if (backTime - enterTime > gapTime) {
  //     fn.call(context,arguments);
  //     enterTime = backTime; // 赋值给第一次触发的时间，这样就保存了第二次触发的时间
  //   }
  // };
  let prev = Date.now();
  return function () {
    let context = this;
    let args = arguments;
    let now = Date.now();
    console.log(now - prev > wait)
    if(now - prev > wait){
      fn.apply(context,args)
      prev = Date.now()
    }
  }
}

/**
 * 防抖函数
 * @param {*} fn 
 * @param {*} interval 
 */
export function debounce(fn, interval) {
  // interval = interval || 1000
  // let timeout;
  // return () => {
  //   let context = this;
  //   let args = arguments;
  //   let later = () => {
  //     timeout = null;
  //     fn.apply(context, args);
  //   };
  //   clearTimeout(timeout);
  //   timeout = setTimeout(later, interval);
  // }
  var timer;
  var gapTime = interval || 1000;//间隔时间，如果interval不传，则默认1000ms
  return function() {
    clearTimeout(timer);
    var context = this;
    var args = arguments;//保存此处的arguments，因为setTimeout是全局的，arguments不是防抖函数需要的。
    timer = setTimeout(function() {
      fn.call(context,args);
    }, gapTime);
  };
}


/**
 * 处理im返回的数据格式
 * @param {*} userIds 纯用户id的数据
 * @param {*} userObj key为用户的id的对象
 */
export function handleImUserData (userIds, userObj) {
  let allUserLst = []
  userIds.map((item) => {
    const obj1 = userObj[item]
    const obj = {
      userId: item,
      ...obj1
    }
    allUserLst.push(obj)
  })
  return allUserLst
}
/**
 * 转换时间戳为日期时间格式
 * @param {*} timestamp 
 */
export function formatTimestamp (timestamp) {
  const date = new Date(timestamp);
  const now = new Date();
  const isToday = date.toDateString() === now.toDateString();
  if (isToday) {
    // 如果是今天，只显示时间
    return `${date.getHours().toString().padStart(2, '0')}:${date
      .getMinutes()
      .toString()
      .padStart(2, '0')}`;
  } else {
    // 如果不是今天，显示完整日期和时间
    return `${date.getFullYear()}-${(date.getMonth() + 1)
      .toString()
      .padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')} ${date
      .getHours()
      .toString()
      .padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`;
  }
}

// function debounce(fn, interval) {
//   var timer;
//   var gapTime = interval || 1000;//间隔时间，如果interval不传，则默认1000ms
//   return function() {
//     clearTimeout(timer);
//     var context = this;
//     var args = arguments;//保存此处的arguments，因为setTimeout是全局的，arguments不是防抖函数需要的。
//     timer = setTimeout(function() {
//       fn.call(context,args);
//     }, gapTime);
//   };
// }

// export default {
//   throttle,
//   debounce
// };